package me.wangshier.leetcode.easy;

import java.util.regex.Pattern;

/**
 * 7. 创意标题匹配问题
 *
 * @Author: tongqianwen
 * @Date: 2025/3/4
 */
public class TitleMatch {

    public static String solution(int n, String template_, String[] titles) {

        // 1. 解析模板，生成正则表达式模式
        String regexPattern = parseTemplate(template_);

        // 2. 使用正则表达式模式匹配每个标题
        StringBuilder result = new StringBuilder();
        for (String title : titles) {
            if (matchesPattern(title, regexPattern)) {
                result.append("True,");
            } else {
                result.append("False,");
            }
        }

        // 移除最后一个多余的逗号
        if (result.length() > 0) {
            result.setLength(result.length() - 1);
        }

        return result.toString();
    }


    // 解析模板，生成正则表达式模式
    private static String parseTemplate(String template) {
        // 使用正则表达式替换模板中的通配符
        // 提示：使用 Pattern 和 Matcher 类来处理正则表达式
        template = template.replaceAll("\\{[^}]*\\}", ".*");
        // 请在此处实现具体的正则表达式生成逻辑
        return template; // 这里需要替换为生成的正则表达式模式
    }

    // 判断标题是否匹配正则表达式模式
    private static boolean matchesPattern(String title, String regexPattern) {
        // 使用 Pattern 和 Matcher 类来匹配标题
        return Pattern.compile(regexPattern).matcher(title).matches();
    }

    public static void main(String[] args) {
        //  You can add more test cases here
        String[] testTitles1 = {"adcdcefdfeffe", "adcdcefdfeff", "dcdcefdfeffe", "adcdcfe"};
        String[] testTitles2 = {"CLSomGhcQNvFuzENTAMLCqxBdj", "CLSomNvFuXTASzENTAMLCqxBdj", "CLSomFuXTASzExBdj", "CLSoQNvFuMLCqxBdj", "SovFuXTASzENTAMLCq", "mGhcQNvFuXTASzENTAMLCqx"};
        String[] testTitles3 = {"abcdefg", "abefg", "efg"};

        System.out.println(solution(4, "ad{xyz}cdc{y}f{x}e", testTitles1).equals("True,False,False,True"));
        System.out.println(solution(6, "{xxx}h{cQ}N{vF}u{XTA}S{NTA}MLCq{yyy}", testTitles2).equals("False,False,False,False,False,True"));
        System.out.println(solution(3, "a{bdc}efg", testTitles3).equals("True,True,False"));
    }
}
